package main

import "fmt"

func main() {
	test()
	a, b := 3, 4
	fmt.Println(swap(a, b)) // 4,3

	c, d := 1, 2
	swapFalse(c, d) // 不能交换
	fmt.Println(c, d)
	swapTrue(&c, &d) // 可以交换		2,1
	fmt.Println(c, d)
	c, d = swap(c, d) // 更好的交换方式
	fmt.Println(c, d)
}

// 通过指针修改变量名
func test() {
	var a int = 2
	var pa *int = &a
	*pa = 3
	fmt.Println(a)
}

func swapFalse(a, b int) {
	b, a = a, b
}

func swapTrue(a, b *int) {
	*b, *a = *a, *b
}

// 值传递
func swap(a, b int) (int, int) {
	return b, a
}
